package com.ajx.blog.controller;

import java.util.HashMap;
import java.util.Map;

import com.ajx.blog.service.api.BlogusersService;

import org.apache.dubbo.config.annotation.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/blog/userManage")
public class UserController {

    private Logger logger = LoggerFactory.getLogger(UserController.class);

    @Reference(url = "dubbo://localhost:20881")
    private BlogusersService blogusersService;

    /**
     * @param {Integer} blogUserId 博客用户ID
     * @return {Object}
     * 
     * @description: 管理员通过用户ID删除博客用户
     */
    @DeleteMapping("/{blogUserId}")
    public Object deleteOneUser(@PathVariable("blogUserId") Integer blogUserId) {
        logger.info("管理员调用deleteOneUser()方法");
        Map<String, Object> returnMap = new HashMap<>();
        if (blogUserId == null || blogUserId < 0) {
            returnMap.put("code", -1);
            returnMap.put("msg", "管理员删除博客用户失败:uid异常");
            logger.info("管理员删除博客用户失败:uid异常");
        } else if (blogusersService.deleteOneUserById(blogUserId)) {
            returnMap.put("code", 0);
            returnMap.put("msg", "管理员删除博客用户成功");
            logger.info("管理员删除博客用户成功");
        } else {
            returnMap.put("code", -1);
            returnMap.put("msg", "管理员删除博客用户失败");
            logger.info("管理员删除博客用户失败");
        }
        return returnMap;
    }

    /**
     * @param {Integer} blogUserId 博客用户ID
     * @return {Object}
     * 
     * @description: 管理员修改用户账号状态
     */
    @PutMapping("/{blogUserId}")
    public Object changeUserState(@PathVariable("blogUserId") Integer blogUserId) {
        logger.info("管理员调用changeUserState()方法");
        Map<String, Object> returnMap = new HashMap<>();
        if (blogUserId == null || blogUserId < 0) {
            returnMap.put("code", -1);
            returnMap.put("msg", "管理员修改博客用户状态失败:uid异常");
            logger.info("管理员修改博客用户状态失败:uid异常");
            return returnMap;
        } else {
            if (blogusersService.changeUserState(blogUserId)) {
                returnMap.put("code", 0);
                returnMap.put("msg", "管理员修改博客用户状态成功");
                logger.info("管理员修改博客用户状态成功");
            } else {
                returnMap.put("code", -1);
                returnMap.put("msg", "管理员修改博客用户状态失败");
                logger.info("管理员修改博客用户状态失败");
            }
            return returnMap;
        }
    }

    /**
     * @param {Integer} page 当前页码数
     * @return {Object}
     * 
     * @description: 分页查询所有用户信息
     */
    @GetMapping("/{page}")
    public Object getAllUser(@PathVariable("page") Integer page) {
        logger.info("管理员调用getAllUser()方法");
        Map<String, Object> returnMap = new HashMap<>();
        if (page == null || page < 0) {
            page = 1;
        }
        returnMap.put("code", 0);
        returnMap.put("data", blogusersService.selectAllUserByLimit(page));
        returnMap.put("msg", "管理员分页查询博客用户成功");
        logger.info("管理员分页查询博客用户成功");
        return returnMap;
    }

}
